#coding=utf-8
#這是lonote翻譯用的引導包，提供給其他模組使用
import gettext
import os
import locale

import lonote.sxml as sxml
import lonote.path as path

language = path.fix.language
localeDir = path.fix.localeDir

#可用的Locale值
validLanguages = [
        ('default', 'System default language'),
        ('zh_TW', '繁體中文（台灣）'),
        ('zh_CN', '简体中文（大陆）'),
        ('nolocale', 'No locale support')]

def usingLanguage(localeWord):
    '''使用指定的locale（如 zh_TW 等）

    如果輸入「nolocale」則放棄啟用本地化
    如果輸入「default」則使用系統語系
    如果是其他輸入其他值，則將本地化為指定語系 <- 值不正確等於nolocale'''
    #如果指定為nolocale，就無需啟用locale
    if localeWord == 'nolocale':
        gettext.install('')
        return

    #實際開始
    localeWord = getRealLocaleWord(localeWord) #先把default轉譯掉

    #設定
    try:
        local = gettext.translation('lonote', localeDir, languages = [localeWord])
        local.install()
    except IOError: #如果找不到指定mo檔案，停用locale功能
        gettext.install('')

def saveLanguageFile(localeWord = 'default'):
    '''將指定的語系寫入language檔案中'''
    sxml.save(language, [('lang',localeWord)])

def loadLocaleSetting():
    '''嘗試讀取語言設定檔裡面的值
    語言設定檔位置為程式目錄下的language檔案'''
    languageValue = 'default'
    if os.path.isfile(language):
        answer = sxml.load(language, ['lang'])
        languageValue = answer[0]
    return languageValue

def getRealLocaleWord(localeWord = 'default'):
    '''將 default 換成系統語系，其他直接回傳'''
    if localeWord == 'default':
        lang, enc = locale.getdefaultlocale()
        localeWord = lang
    return localeWord

#用language設定檔中的值作為當前語系
usingLanguage(loadLocaleSetting())
